const koa = require('koa')
// 1.引入koa-router
const Router = require('koa-router')

const app = new koa()

/** 无插件方式： */
// app.use((ctx,next)=>{
//     switch(ctx.URL){
//         case "/" :
//             break;
//     }
// })

// 2.实例化路由
const router = new Router()

// 当 get 请求为 http://127.0.0.1/ 时 触发
router.get('/', (ctx, next) => {
    ctx.body = '首页'
})


/** 子路由 */
const userRouter = new Router()
userRouter.get('/', (ctx, next) => { // 访问http://127.0.0.1/user
    ctx.body = '用户首页'
})
userRouter.get('/address', (ctx, next) => { // 访问http://127.0.0.1/user/address
    ctx.body = '用户地址'
})
router.use('/user', userRouter.routes())


/** 添加前缀，映射地址 */
const itemRouter = new Router({
    prefix: '/item'  // 当请求路径以/item开头时 映射到此
})
itemRouter.get('/add', (ctx, next) => {   // 访问http://127.0.0.1/item/add
    ctx.body = '添加商品'
})
router.use(itemRouter.routes())


/** 动态路由 */
const listRouter = new Router()
listRouter.get('/list/:id', (ctx, next) => {    // 访问http://127.0.0.1/list/xxx
    ctx.body = '访问列表id为' + ctx.params.id
})
router.use(listRouter.routes())


/** 路由重定向 */
router.redirect('/admin', '/', 301) // 访问http://127.0.0.1/admin 时重定向到 http://127.0.0.1/
// router.get('/admin', (ctx, next) => {  // 访问http://127.0.0.1/admin 时重定向到 http://127.0.0.1/
//     ctx.redirect('/')  
// }) 


/** 生成url */
console.log(Router.url('/category/:id',{id:'1'},{query:{desc:'book'}}))
//      /category/1?desc=book


// 3.注册路由 
app.use(router.routes())

app.listen('80')


